package com.legal.utils.tools;


import com.legal.domain.po.Cases;
import com.legal.domain.vo.AICasesVO;
import com.legal.service.chat.ICasesService;
import com.legal.utils.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;

@RequiredArgsConstructor
@Component
@Slf4j
public class AITool {
    private final ICasesService casesService;

    @Tool(description = "当用户需要分析案件时,调用工具查询获取案件信息，根据返回的案件信息进行分析，然后再回答用户,你需要根据返回的数据，对caseContent的内容进行案件分析，如果用户需要你查看案件，就把返回的案件信息整理给用户")
    public AICasesVO getCasesByUserNoAndChatId(
            @ToolParam(description = "用户编号") String userNo,
            @ToolParam(description = "会话ID") String chatId) {
        log.info("工具中获取的userNo: {}, chatId: {}", userNo, chatId);
        AICasesVO vo = BeanUtil.copy(casesService.getCases(userNo, chatId), AICasesVO.class);
        return vo;
    }

    @Tool(description ="当你分析完这个案件后，请你给出一些方案，需要让用户选择一个方案，然后根据选择的这个方案，请你评判这个案件的胜率，然后你自己生成一个vectoryRate，将这个参数调用工具，将信息保存到数据库中,最后将修改后查询数据库中的信息返回给用户" )
    public Cases updateCase(
            @ToolParam(description = "会话ID", required = true) String chatId,
            @ToolParam(description = "用户编号") String userNo,
            @ToolParam(description = "案件胜率", required = false) Integer vectoryRate){
        casesService.updateCase(chatId, vectoryRate);
        return casesService.getCases(userNo, chatId);
    }
}
